package jvm;

/*
原子性：
n++操作不能够保证原子性
public class jvm.Test06 {
  volatile int number;

  public jvm.Test06();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: aload_0
       5: iconst_0
       6: putfield      #2                  // Field number:I
       9: return

  public void add();
    Code:
       0: aload_0
       1: dup
       2: getfield      #2                  // Field number:I
       5: iconst_1
       6: iadd
       7: putfield      #2                  // Field number:I
      10: return
}
n++被拆分为三个指令： 执行getfield 拿到原始n  执行iadd 进行加1操作
执行putfield 将累加后的值写回

 */

public class Test06 {
    volatile int number = 0;

    public void add() {
        number++;
    }


}
